package cn.zn.modules.pz.cur.dao;

import cn.zn.modules.pz.cur.entity.TpMain;
import cn.zn.modules.pz.cur.entity.dto.PzQueryDTO;
import cn.zn.modules.pz.his.entity.vo.PzAuditVO;
import cn.zn.modules.pz.inter.vo.PzForInvoiceVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface TpMainMapper extends BaseMapper<TpMain> {
    List<TpMain> findList(@Param("param") PzQueryDTO dto, IPage<TpMain> page);

    TpMain findDetail(@Param("mainId") String mainId);

    List<PzAuditVO> findAudit(@Param("mainId") String mainId);

    long findCountToAppoint(@Param("userCode") String userCode);

    /**
     * 查询单据信息（发票编辑）
     *
     * @param applyCode
     * @return
     */
    PzForInvoiceVO findPzForInvoice(String applyCode);

    /**
     * 查询预约的主表信息
     *
     * @param mainId
     * @return
     */
    TpMain findByAppontMainId(@Param("mainId") String mainId);

    /**
     * 单据统计
     *
     * @return
     */
    @MapKey("")
    List<Map<String, Object>> queryStatistical();

    /**
     * 处理平均时长
     *
     * @return
     */
    @MapKey("")
    List<Map<String, Object>> queryAvgForDealTime();

    /**
     * 查询预约处理数
     * @return
     */
    Long queryAppointDeal();
}